package com.zmn.mcc.model.entity.staff.dingtalk;

import com.zmn.common.utils.pager.Operator;
import lombok.*;

import java.io.Serializable;
import java.util.Date;

/**
 * 钉钉用户实体
 *
 * @author tanghongjun
 * @since 2020/5/27
 */
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class StaffDingTalk extends Operator implements Serializable {
    private static final long serialVersionUID = 1L;


    private int staffId;

    /**
     * 描述: 转正时间
     **/
    @DingTalkField(value = "sys01-regularTime", groupId = "sys01", lable = false, convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date becomeFormalTime;

    /**
     * 员工类型
     */
    @DingTalkField(value = "sys01-employeeType", groupId = "sys01", convertMethod = "com.zmn.mcc.common.dictionary.StaffDict#getRoleTypeByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffDict#getRoleTypeName(${java.lang.Integer, $this})")
    protected Integer roleType;

    /**
     * 钉钉userId
     */
    private String dTalkId;

    /**
     * 描述: 身份证号码
     **/
    @DingTalkField(value = "sys02-certNo", groupId = "sys02")
    private String idCardNumber;

    /**
     * 描述: 出生日期
     **/
    @DingTalkField(value = "sys02-birthTime", groupId = "sys02", lable = false, convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date birthday;

    /**
     * 描述: 性别：1.男，2.女
     **/
    @DingTalkField(value = "sys02-sexType", groupId = "sys02", convertMethod = "com.zmn.mcc.common.dictionary.StaffFamilyDict#getSexTypeByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffFamilyDict#getSexTypeName(${java.lang.Integer, $this})")
    private Integer sexType;

    /**
     * 描述: 民族
     **/
    @DingTalkField(value = "sys02-nationType", groupId = "sys02")
    private String nationType;

    /**
     * 描述: 身份证地址
     **/
    @DingTalkField(value = "sys02-certAddress", groupId = "sys02")
    private String idCardAdress;

    /**
     * 描述: 证件有效期
     **/
    @DingTalkField(value = "sys02-certEndTime", groupId = "sys02", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date idCardValidityTime;

    /**
     * 描述: 婚姻状况：1.未婚，2.已婚，3.离异，4.丧偶，5.分居
     **/
    @DingTalkField(value = "sys02-marriage", groupId = "sys02", convertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getMarriageStatusByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getMarriageStatusName(${java.lang.Integer, $this})")
    private Integer marriageStatus;

    /**
     * 描述: 首次参加工作时间
     **/
    @DingTalkField(value = "sys02-joinWorkingTime", groupId = "sys02", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date joinWorkingTime;

    /**
     * 描述: 户籍类型1.本地城镇，2.本地农村, 3.外地城镇（省内）4.外地农村（省内）, 5.外地城镇（省外）,6.外地农村（省外）
     **/
    @DingTalkField(value = "sys02-residenceType", groupId = "sys02", convertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getResidenceTypeByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getResidenceTypeName(${java.lang.Integer, $this})")
    private Integer residenceType;

    /**
     * 描述: 户籍所在地 ?住址
     **/
    @DingTalkField(value = "sys02-address", groupId = "sys02")
    private String registeredAdress;

    /**
     * 描述: 政治面貌：1.团员，2.党员，3.群众，4.其他
     **/
    @DingTalkField(value = "sys02-politicalStatus", groupId = "sys02", convertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getPoliticalStatusByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getPoliticalStatusName(${java.lang.Integer, $this})")
    private Integer politicalStatus;

    /**
     * 描述: 最高学历：1.小学，2.初中，3.高中，4.中专，5.大专，6.本科，7.硕士，8.博士，9.其他
     **/
    @DingTalkField(value = "sys03-highestEdu", groupId = "sys03", convertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getHighestEduByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffArchivesDict#getHighestEduName(${java.lang.Integer, $this})")
    private Integer highestEdu;

    /**
     * 描述: 毕业院校
     **/
    @DingTalkField(value = "sys03-graduateSchool", groupId = "sys03")
    private String graduateSchool;

    /**
     * 描述: 毕业时间
     **/
    @DingTalkField(value = "sys03-graduationTime", groupId = "sys03", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date graduationTime;

    /**
     * 描述: 所学专业
     **/
    @DingTalkField(value = "sys03-major", groupId = "sys03")
    private String major;

    /**
     * 描述: 银行卡号
     **/
    @DingTalkField(value = "sys04-bankAccountNo", groupId = "sys04")
    private String bankCardNo;

    /**
     * 描述: 合同期限
     **/
    @DingTalkField(value = "sys05-contractPeriodType", groupId = "sys05")
    private String fristContractValidityPeriod;

    /**
     * 描述: 首次合同签订时间
     **/
    @DingTalkField(value = "sys05-firstContractStartTime", groupId = "sys05", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date fristContractTime;

    /**
     * 描述: 首次合同到期时间
     **/
    @DingTalkField(value = "sys05-firstContractEndTime", groupId = "sys05", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date fristContractEndTime;

    /**
     * 描述: 合同签订时间
     **/
    @DingTalkField(value = "sys05-nowContractStartTime", groupId = "sys05", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date contractTimeNow;

    /**
     * 描述: 合同到期时间
     **/
    @DingTalkField(value = "sys05-nowContractEndTime", groupId = "sys05", convertMethod = "com.zmn.common.utils.date.DateUtil#parse(${java.lang.String, $this},${java.lang.String, yyyy-MM-dd})", reverseConvertMethod = "com.zmn.common.utils.date.DateUtil#toString(${java.util.Date, $this})")
    private Date contractEndTimeNow;

    /**
     * 描述: 合同续签次数
     **/
    @DingTalkField(value = "sys05-contractRenewCount", groupId = "sys05")
    private Integer contractTimes;

    /**
     * 描述: 紧急联系人姓名
     **/
    @DingTalkField(value = "sys06-urgentContactsName", groupId = "sys06")
    private String familyName;

    /**
     * 描述: 紧急联系人关系：1.父母，2.配偶，3.子女，4.其他
     **/
    @DingTalkField(value = "sys06-urgentContactsRelation", groupId = "sys06", convertMethod = "com.zmn.mcc.common.dictionary.StaffFamilyDict#getFamilyByName(${java.lang.String, $this})", reverseConvertMethod = "com.zmn.mcc.common.dictionary.StaffFamilyDict#getFamilyName(${java.lang.Integer, $this})")
    private Integer familyRelation;

    /**
     * 描述: 紧急联系人手机号
     **/
    @DingTalkField(value = "sys06-urgentContactsPhone", groupId = "sys06")
    private String familyMobile;

}
